package com.changgou.goods.api;

import com.changgou.common.entity.Result;
import com.changgou.goods.pojo.Brand;
import com.changgou.goods.pojo.Category;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

import java.util.Map;

/**
 * @Description:
 * @Version: V1.0
 */
@Api(value="分类管理接口",description = "分类管理接口，提供页面的增、删、改、查")
public interface CategoryApi {


    /**
     * 查询全部数据
     *
     * @return
     */
    @ApiOperation("查询所有分类列表")
    public Result findAll();

    /***
     * 根据ID查询数据
     * @param id
     * @return
     */
    @ApiOperation("根据ID查询分类数据")
    @ApiImplicitParams({
            @ApiImplicitParam(name="id",value = "品牌ID",required=true,paramType="path",dataTypeClass = Integer.class),
    })
    public Result findById(Integer id);


    /***
     * 新增数据
     * @param Category
     * @return
     */
    @ApiOperation("新增分类")
    public Result add(Category category);


    /***
     * 修改数据
     * @param Category
     * @param id
     * @return
     */
    @ApiOperation("修改分类")
    @ApiImplicitParams({
            @ApiImplicitParam(name="id",value = "分类ID",required=true, paramType = "path", dataTypeClass = Integer.class),
    })
    public Result update(Category category, Integer id);


    /***
     * 根据ID删除品牌数据
     * @param id
     * @return
     */
    @ApiOperation("删除分类")
    @ApiImplicitParams({
            @ApiImplicitParam(name="id",value = "品牌ID",required=true,paramType="path",dataTypeClass = Integer.class),
    })
    public Result delete(Integer id);

    /***
     * 多条件搜索品牌数据
     * @param searchMap
     * @return
     */
    @ApiOperation("查询分类列表")
    public Result findList(Map searchMap);


    /***
     * 分页搜索实现
     * @param searchMap
     * @param page
     * @param size
     * @return
     */
    @ApiOperation("条件分页查询分类列表")
    @ApiImplicitParams({
            @ApiImplicitParam(name="searchMap",value = "条件查询 JSON数据， 品牌名称或者是品牌首字母"),
            @ApiImplicitParam(name="page",value = "页码",required=true,paramType="path",dataTypeClass = Integer.class),
            @ApiImplicitParam(name="size",value = "每页记录数",required=true,paramType="path",dataTypeClass = Integer.class)
    })

    public Result findPage(Map searchMap, Integer page, Integer size);


    @ApiOperation("根据一级分类的id查询对应3级分类列表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id",value = "分类ID",required =true,paramType = "path",dataTypeClass = Integer.class)
    })
    public Result findListCategoryId(Integer id);


//    // 根据一级分类id查询对应的二级分类信息
//
//    @ApiOperation("根据一级分类ID查询对应的二级分类信息")
//    @ApiImplicitParams({
//            @ApiImplicitParam(name="parent_id",value = "一级分类ID",required=true,paramType="path",dataTypeClass = Integer.class),
//    })
//    public Result  findListCategoryFirst( Integer parent_id);
//
//    //根据二级分类id查询对应的三级分类信息
//    @ApiOperation("根据二级分类ID查询对应的三级分类信息")
//    @ApiImplicitParams({
//            @ApiImplicitParam(name="id",value = "二级分类ID",required=true,paramType="path",dataTypeClass = Integer.class),
//    })
//    public Result findListCategoryTwo( Integer id);
//
//    //根据三级分类id查询对应的信息
//    @ApiOperation("根据三级分类ID查询对应的信息")
//    @ApiImplicitParams({
//            @ApiImplicitParam(name="parent_id",value = "三级分类ID",required=true,paramType="path",dataTypeClass = Integer.class),
//    })
//    public Result findListCategoryThree(Integer parent_id);
}
